package com.huawang.mdesign.model.service.util.reqif;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamOmitField;
import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.List;

/**
 * @author xdl
 * @since 2023-04-04
 */
@Getter
@Setter
@XStreamAlias(ReqIFConstants.REQ_IF_CONTENT)
public class ReqIFContent {

    /**
     * Linkage to the DataTypeDefinition content elements.
     */
    @XStreamAlias(ReqIFConstants.DATA_TYPES)
    private List<AbstractDatatypeDefinition> dataTypes = new ArrayList<>();

    /**
     * Linkage to the SpecType content elements.
     */
    @XStreamAlias(ReqIFConstants.SPEC_TYPES)
    private List<AbstractSpecType> specTypes = new ArrayList<>();

    /**
     * Linkage to the Specification content elements.
     */
    @XStreamAlias(ReqIFConstants.SPECIFICATIONS)
    private List<Specification> specifications = new ArrayList<>();

    /**
     * Linkage to the SpecObject content elements.
     */
    @XStreamAlias(ReqIFConstants.SPEC_OBJECTS)
    private List<SpecObject> specObjects = new ArrayList<>();

    /**
     * Linkage to the RelationGroup content elements.
     */
    @XStreamAlias(ReqIFConstants.SPEC_RELATION_GROUPS)
    private List<RelationGroup> specRelationGroups = new ArrayList<>();

    /**
     * Linkage to the SpecRelation content elements.
     */
    @XStreamAlias(ReqIFConstants.SPEC_RELATIONS)
    private List<SpecRelation> specRelations = new ArrayList<>();

    /**
     * Linking back to the Exchange Document root element.
     */
    @XStreamOmitField
    private ReqIF documentRoot;
}
